go/types.Named.underlying (field)
21 uses
go/types (current package)
decl.go#L584: if named.underlying == nil {
decl.go#L585: named.underlying = Typ[Invalid]
decl.go#L595: named.underlying = Typ[Invalid]
named.go#L18: underlying Type // possibly a *Named during setup; never a *Named once set up completely
named.go#L58: t.tparams, t.underlying, t.methods = t.resolver(ctxt, t)
named.go#L59: t.fromRHS = t.underlying // for cycle detection
named.go#L66: typ := &Named{check: check, obj: obj, orig: orig, fromRHS: underlying, underlying: underlying, tparams: tparams, methods: methods}
named.go#L89: switch t.underlying.(type) {
named.go#L209: t.resolve(nil).underlying = underlying
named.go#L226: func (t *Named) Underlying() Type { return t.resolve(nil).underlying }
named.go#L314: n.underlying = u
named.go#L322: n.underlying = typ
named.go#L360: assert(n.orig.underlying != nil)
named.go#L364: if _, unexpanded := n.orig.underlying.(*Named); unexpanded {
named.go#L379: underlying = n.check.subst(instPos, n.orig.underlying, smap, ctxt)
named.go#L388: if iface == n.orig.underlying {
named.go#L412: return t.underlying
object.go#L243: panic(fmt.Sprintf("invalid underlying type %T", t.underlying))
typestring.go#L213: if t == universeComparable.Type().(*Named).underlying {
validtype.go#L66: if t.underlying == Typ[Invalid] {
validtype.go#L82: t.underlying = Typ[Invalid] // t is in the current package (no race possibility)